From cbe075b9dee24ae12407cf92a13449c07b3135e2 Mon Sep 17 00:00:00 2001 From: Norman Bos Date: Fri, 26 Jul 2024 23:29:44 +0200 Subject: [PATCH] add case toggle functions --- arduino-sony-minidisc-ir-remote.ino | 186 ++++++++++++---------------- 1 file changed, 82 insertions(+), 104 deletions(-) diff --git a/arduino-sony-minidisc-ir-remote.ino b/arduino-sony-minidisc-ir-remote.ino index 7600be6..f2b7915 100644 --- a/arduino-sony-minidisc-ir-remote.ino +++ b/arduino-sony-minidisc-ir-remote.ino @@ -1,5 +1,4 @@ /* - WebServer to use as replacement for Sony RM-D27M to control Sony MiniDisc decks. Based on the the following sketches: @@ -7,12 +6,6 @@ - ESP32/SD_Test - IRremote/SendDemo - - If the IP address of your shield is yourAddress: - http://yourAddress/H turns the LED on - http://yourAddress/L turns it off - - Circuit: - LED attached to pin 13 (optional) - IR Transmitter attached to pin 4 (connect to 5v or 3v3) @@ -153,82 +146,6 @@ void notFound(AsyncWebServerRequest *request) request->send(404, "text/plain", "Not found"); } -//------------------------------------------------ -//-------------- SD-Card Functions --------------- -/* void initSDCard() -{ - if (!SD.begin()) - { - Serial.println("Card Mount Failed"); - return; - } - uint8_t cardType = SD.cardType(); - - if (cardType == CARD_NONE) - { - Serial.println("No SD card attached"); - return; - } - Serial.print("SD Card Type: "); - if (cardType == CARD_MMC) - { - Serial.println("MMC"); - } - else if (cardType == CARD_SD) - { - Serial.println("SDSC"); - } - else if (cardType == CARD_SDHC) - { - Serial.println("SDHC"); - } - else - { - Serial.println("UNKNOWN"); - } - uint64_t cardSize = SD.cardSize() / (1024 * 1024); - Serial.printf("SD Card Size: %lluMB\n", cardSize); -} */ - -/* void listDir(fs::FS &fs, const char *dirname, uint8_t levels) -{ - Serial.printf("Listing directory: %s\n", dirname); - - File root = fs.open(dirname); - if (!root) - { - Serial.println("Failed to open directory"); - return; - } - if (!root.isDirectory()) - { - Serial.println("Not a directory"); - return; - } - - File file = root.openNextFile(); - while (file) - { - if (file.isDirectory()) - { - Serial.print(" DIR : "); - Serial.println(file.name()); - if (levels) - { - listDir(fs, file.path(), levels - 1); - } - } - else - { - Serial.print(" FILE: "); - Serial.print(file.name()); - Serial.print(" SIZE: "); - Serial.println(file.size()); - } - file = root.openNextFile(); - } -} */ - //------------------------------------------------ //--------------- IR Functions ------------------- @@ -300,6 +217,45 @@ void sendCommand20(String commandString) } } +//! void findCommandAndSend(String char) +//! { find char in Array and use value to send command } + +void caseToggleLow() +{ + if (wasNumber == true) + Serial.println("toggle to char"); + wasNumber = false; + if (wasLowercase == false) + Serial.println("toggle case low"); + if (wasLowercase == true) + Serial.println("no toggle"); +} + +void caseToggleUp() +{ + if (wasNumber == true) + Serial.println("toggle to char"); + wasNumber = false; + if (wasLowercase == true) + Serial.println("toggle case up"); + if (wasLowercase == false) + Serial.println("no toggle"); +} + +void toggleDigit() +{ + if (wasNumber == true) + Serial.println("no toggle"); + if (wasNumber == false) + Serial.println("toggle to digit"); + wasNumber = true; +} + +void finalizeTrack() +{ + Serial.println("Finalize track"); +} + void nameSingleTrack(String titlestring) { Serial.print("track name: "); @@ -317,16 +273,54 @@ void nameSingleTrack(String titlestring) for (int i = 0; i < str_len; i++) // Loop over array { int s = char_array[i]; - Serial.print("char: "); - Serial.println(char_array[i]); //! Hier müssen verschiedene Sachen getestet werden: //! Ist das Array-Ende erreicht? Ist der case ein anderer als vom vorigen char? Prüft aktuelle char und entscheidet, welches Command gesendet wird //! Wie kann ich das in eigene Funktionen verpacken? - // Test if char is a lowerCase letter - if (isLowerCase(char_array[i])) + + if (i == str_len - 1) { - Serial.println("The character is lower case"); + Serial.println("End of line."); + finalizeTrack(); + } + else + { + Serial.println(i); + Serial.println("char: "); + Serial.println(char_array[i]); + // Test if char is a lowerCase letter + if (isLowerCase(char_array[i])) + { + Serial.println("The character is lower case"); + caseToggleLow(); + wasLowercase = true; + wasNumber = false; + } + // Test if char is a upperCase letter + if (isUpperCase(char_array[i])) + { + Serial.println("The character is upper case"); + caseToggleUp(); + wasLowercase = false; + wasNumber = false; + } + // Test if char is a digit + if (isDigit(char_array[i])) + { + Serial.println("The character is digit"); + toggleDigit(); + wasNumber = true; + } + // Test if char is special char + if (isPunct(char_array[i])) + { + Serial.println("The character is special char"); + } + // Test if char is a space + if (isSpace(char_array[i])) + { + Serial.println("The character is a space"); + } } } } @@ -339,22 +333,6 @@ void nameAllTracks(String message) // use nameSingleTrack with each track } -//------------------------------------------------ -//------------- Webserver Functions -------------- - -/* void initWiFi() -{ - WiFi.mode(WIFI_STA); - WiFi.begin(SSID, PASSWORD); - Serial.print("Connecting to WiFi .."); - while (WiFi.status() != WL_CONNECTED) - { - Serial.print('.'); - delay(1000); - } - Serial.println(WiFi.localIP()); -} */ - //------------------------------------------------ //-------------------- Setup --------------------- void setup()