#include <limits.h>
#include <SPI.h>
#include <SdFat.h>
SdFat SD;
#define CS_PIN SS
// HEAD Variables
char tuningNote[7];
float tuningFreq;
float lugCount;
float lugThreadPitch;
float bearEdgeId;
float bearEdgeExtProf;
char headBrand[11];
char headSeries[11];
char headModel[11];
float skirtHoopId;
float skirtLength;
float filmMaxDia;
float filmThickness;
double filmDensity;
int32_t filmElasMod;
extern String printBuffer;
extern File file;
extern const byte inputPullups[];
extern String fileNames[];
extern int currentIndex;
extern char btnPush;
extern String dirLevelOne[];
extern String dirLevelTwo[];
extern String dirLevelThree[];
extern String dirLevelFour[];
extern File dir;
extern String fileSelect[];
extern int fileCount;
extern byte fileNavLvlStart;
extern byte fileNavLvlCurrent;
extern byte fileNavLvlEnd;
void getFileList() {
printBuffer = '\0';
for( byte i = 0; i <= fileNavLvlEnd; i++ ) {
if( fileSelect[i] != "\0" ) {
// Serial.print( '/' + fileSelect[i] );
printBuffer += '/' + fileSelect[i];
}
}
filecount();
for( byte i = 0; i < fileCount; i++ ) {
fileNames[i] = getFileName(i+1);
// Serial.println(dir);
}
// Serial.println(printBuffer);
if( fileCount == 0 ) {
Serial.println( "No files found!" );
} else for( byte i = 0; i < fileCount; i++ ) {
// Serial.println(fileNames[i]);
}
Serial.print("Selected file: ");
Serial.println( fileNames[ currentIndex ] );
keypadCleanup();
}
void setup() {
for( byte i = 0; i < 6; i++ ) {
pinMode(inputPullups[i], INPUT_PULLUP);
}
Serial.begin(9600);
// Wait for USB Serial
while (!Serial) {
yield();
}
// Serial.println("Type any character to start");
// while (!Serial.available()) {
// yield();
// }
Serial.print("Initializing SD Card... ");
// Initialize the SD.
if (!SD.begin(CS_PIN)) {
Serial.println("Failed!");
}
Serial.println("Success!");
Serial.println("Generating Head Filepaths & Files...");
// bass();
// snare();
toms();
// headsTest();
Serial.println("Generating Drum Filepaths & Files...");
drums();
/* Veryifying that files were created */
// SD.ls(&Serial, LS_R);
// Serial.println("Listing Files: Complete");
// Serial.println();
// browseSD();
// browseSD2();
fileSelect[0] = "HEADS";
fileSelect[1] = "TOMS";
fileSelect[2] = "BATT";
fileSelect[3] = "Evans";
fileSelect[4] = "Hydralic";
// printBuffer = dirLevelOne[1] + '/' + dirLevelTwo[0];
// dir = SD.open( printBuffer.c_str() );
getFileList();
}
//------------------------------------------------------------------------------
void loop() {
btnPush = readKeypad(); // Check keypad for presses
keysFile(); // Increment index as needed per keypad reading
// printKeypad();
keypadCleanup();
}
/* NEED TO WRAP FILENAME DISPLAY IN--WHAT IS EFFECTIVELY--THIS
while( ( fileNavLvlCurrent >= fileNavLvlStart ) && (( fileNavLvlCurrent <= fileNavLvlEnd ) ) {
while( ( select = 0 ) && ( back = 0 ) ) {
listFiles();
}
if( select = 1 ) {
filepath[ fileNavLvlCurrent ] = fileName;
fileNavLvlCurrent++;
} else if( back = 1 ) {
fileNavLvlCurrent--;
filepath[fileNavLvlCurrent] = '';
}
}
if( fileNavLvlCurrent < fileNavLvlStart ) {
// Update nothing
loop();
} else if( fileNavLvlCurrent > fileNavLvlEnd ) {
// Update relevant data
printBuffer = '';
for( i = 0; i = fileNavLvlEnd; i++) {
printBuffer += filepath[i];
}
filecount();
}
*/