aboutsummaryrefslogtreecommitdiff
path: root/examples/AnimatedGIF/FilenameFunctions.cpp
diff options
context:
space:
mode:
authormrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2020-08-10 21:47:13 +0100
committermrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2020-08-10 21:47:13 +0100
commitb973db14ee0dd967724bd6e9c519f8440e643519 (patch)
tree6a73fcaacaa7280194f4c16f7b2ff5b3dc160bcd /examples/AnimatedGIF/FilenameFunctions.cpp
parent1ffce4e60c3f60a7c9662f5b6a5650bed1d16c77 (diff)
Updated GIF example
Diffstat (limited to 'examples/AnimatedGIF/FilenameFunctions.cpp')
-rw-r--r--examples/AnimatedGIF/FilenameFunctions.cpp169
1 files changed, 0 insertions, 169 deletions
diff --git a/examples/AnimatedGIF/FilenameFunctions.cpp b/examples/AnimatedGIF/FilenameFunctions.cpp
deleted file mode 100644
index e8a8f04..0000000
--- a/examples/AnimatedGIF/FilenameFunctions.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Animated GIFs Display Code for SmartMatrix and 32x32 RGB LED Panels
- *
- * This file contains code to enumerate and select animated GIF files by name
- *
- * Written by: Craig A. Lindley
- *
- * Other references: https://github.com/espressif/arduino-esp32/blob/master/libraries/WebServer/examples/FSBrowser/FSBrowser.ino
- *
- */
-
-#include "FilenameFunctions.h"
-
-File file;
-
-int numberOfFiles;
-
-bool fileSeekCallback(unsigned long position) {
- return file.seek(position);
-}
-
-unsigned long filePositionCallback(void) {
- return file.position();
-}
-
-int fileReadCallback(void) {
- return file.read();
-}
-
-int fileReadBlockCallback(void * buffer, int numberOfBytes) {
- return file.read((uint8_t*)buffer, numberOfBytes);
-}
-
-bool isAnimationFile(const char filename []) {
- String filenameString(filename);
-
-#if defined(ESP32)
- // ESP32 filename includes the full path, so need to remove the path before looking at the filename
- int pathindex = filenameString.lastIndexOf("/");
- if(pathindex >= 0)
- filenameString.remove(0, pathindex + 1);
-#endif
-
- DBG_OUTPUT_PORT.print(filenameString);
-
- if ((filenameString[0] == '_') || (filenameString[0] == '~') || (filenameString[0] == '.')) {
- DBG_OUTPUT_PORT.println(" ignoring: leading _/~/. character");
- return false;
- }
-
- filenameString.toUpperCase();
- if (filenameString.endsWith(".GIF") != 1) {
- DBG_OUTPUT_PORT.println(" ignoring: doesn't end of .GIF");
- return false;
- }
-
- DBG_OUTPUT_PORT.println();
-
- return true;
-}
-
-// Enumerate and possibly display the animated GIF filenames in GIFS directory
-int enumerateGIFFiles(const char *directoryName, boolean displayFilenames) {
-
- numberOfFiles = 0;
-
- File directory = FILESYSTEM.open(directoryName);
- if (!directory) {
- return -1;
- }
-
- File file = directory.openNextFile();
- while (file) {
- if (isAnimationFile(file.name())) {
- numberOfFiles++;
- if (displayFilenames) {
- DBG_OUTPUT_PORT.println(file.name());
- }
- }
- file.close();
- file = directory.openNextFile();
- }
-
- file.close();
- directory.close();
-
- return numberOfFiles;
-}
-
-// Get the full path/filename of the GIF file with specified index
-void getGIFFilenameByIndex(const char *directoryName, int index, char *pnBuffer) {
-
- char* filename;
-
- // Make sure index is in range
- if ((index < 0) || (index >= numberOfFiles))
- return;
-
- File directory = FILESYSTEM.open(directoryName);
- if (!directory)
- return;
-
- File file = directory.openNextFile();
- while (file && (index >= 0)) {
- filename = (char*)file.name();
-
- if (isAnimationFile(file.name())) {
- index--;
-
-#if !defined(ESP32)
- // Copy the directory name into the pathname buffer - ESP32 SD Library includes the full path name in the filename, so no need to add the directory name
- strcpy(pnBuffer, directoryName);
- // Append the filename to the pathname
- strcat(pnBuffer, filename);
-#else
- strcpy(pnBuffer, filename);
-#endif
- }
-
- file.close();
- file = directory.openNextFile();
- }
-
- file.close();
- directory.close();
-}
-
-int openGifFilenameByIndex(const char *directoryName, int index) {
- char pathname[30]; // long filename will break this... Smash the stack! i.e:
- /*
- * Stack smashing protect failure!
- *
- * abort() was called at PC 0x400d9a90 on core 1
- *
- * Backtrace: 0x40088578:0x3ffb1ec0 0x4008877b:0x3ffb1ee0 0x400d9a90:0x3ffb1f00 0x400d1d62:0x3ffb1f20 0x400d182f:0x3ffb1f80 0x400ef86e:0x3ffb1fa0
- *
- * Rebooting...
-
- */
-
- getGIFFilenameByIndex(directoryName, index, pathname);
-
- DBG_OUTPUT_PORT.print("Pathname: ");
- DBG_OUTPUT_PORT.println(pathname);
-
- if(file)
- {
- file.close();
- DBG_OUTPUT_PORT.print("Closing old file...");
- }
-
- // Attempt to open the file for reading
- DBG_OUTPUT_PORT.print("Opening new file...");
- file = FILESYSTEM.open(pathname);
- if (!file) {
- DBG_OUTPUT_PORT.println("Error opening GIF file");
- return -1;
- }
-
- return 0;
-}
-
-
-// Return a random animated gif path/filename from the specified directory
-void chooseRandomGIFFilename(const char *directoryName, char *pnBuffer) {
-
- int index = random(numberOfFiles);
- getGIFFilenameByIndex(directoryName, index, pnBuffer);
-}