Demo of the RA8875 Keypad to enter a username and password.

Dependencies:   mbed RA8875 Keypad

Revision:
2:117fb9168afc
Parent:
1:0fea662d1826
Child:
3:954431ea9b0d
--- a/main.cpp	Fri Mar 04 12:24:32 2016 +0000
+++ b/main.cpp	Sat Mar 05 16:23:10 2016 +0000
@@ -32,6 +32,7 @@
 };
 
 
+
 void CalibrateTS(void)
 {
     FILE * fh;
@@ -67,54 +68,101 @@
     }
 }
 
+
+void UsernameAndPasswordTest(void) {
+    char name1[20];
+    char name2[20];
+    
+    kp.SetKeyboard();
+    lcd.puts(0,20, "Enter username and password\r\n");
+    if (kp.GetString(name1, sizeof(name1), "Username:")) {
+        //lcd.printf("username: %s\r\n", name1);
+        if (kp.GetString(name2, sizeof(name2), "Password:", '*')) {
+            //lcd.printf("password: %s\r\n", name2);
+            kp.Erase();
+            lcd.foreground(BrightRed);
+            lcd.background(Black);
+            lcd.cls();
+            lcd.SetTextFontSize(2);
+            lcd.SetTextCursor(0,30);
+            lcd.printf("username: %s\r\npassword: %s\r\n", name1, name2);
+            lcd.SetTextFontSize();
+        }
+    } else {
+        kp.Erase();
+        pc.printf("<esc>\r\n");
+    }
+}
+
+
+void CalculatorKeypadTest(void) {
+    char name1[20];
+    
+    kp.SetKeyboard(&altkeyboard, '=');
+    if (kp.GetString(name1, sizeof(name1), "Calc:")) {
+        lcd.foreground(BrightRed);
+        lcd.background(Black);
+        lcd.cls();
+        lcd.SetTextCursor(0,40);
+        lcd.printf("Calculator: %s\r\n", name1);
+    }
+}
+
+void FloatingSmallQWERTYTest(loc_t x, loc_t y, dim_t w, dim_t h) {
+    Keypad::keyboard_t tiny;
+    char name1[10];
+    
+    // copy definition and then resize it
+    memcpy(&tiny, kp.GetInternalKeypad(), sizeof(Keypad::keyboard_t));
+    tiny.x = x; tiny.y = y;
+    tiny.width = w; tiny.height=h;
+    
+    // now select this tiny keyboard
+    kp.SetKeyboard(&tiny);
+    if (kp.GetString(name1, sizeof(name1), "Cprs:")) {
+        lcd.foreground(BrightRed);
+        lcd.background(Black);
+        lcd.cls();
+        lcd.SetTextCursor(0,40);
+        lcd.printf("Compressed: %s\r\n", name1);
+    }
+}
+
+
+
+
 int main()
 {
-    char name1[20], name2[20];
-    bool toggle = false;
+    int testNum = 2;    // starting test
 
     pc.baud(460800);                            // I like a snappy terminal, so crank it up!
     pc.printf("\r\nDev Keypad - Build " __DATE__ " " __TIME__ "\r\n");
 
     lcd.init();
-    lcd.foreground(Yellow);
-    lcd.background(Black);
-    lcd.puts(0,0, "RA8875 Soft Fonts - Build " __DATE__ " " __TIME__ "\r\n");
     InitTS();
     while(1) {
         lcd.foreground(Yellow);
         lcd.background(Black);
         lcd.cls();
-        if (!toggle) {
-            kp.SetKeyboard();
-            lcd.puts(0,20, "Enter username and password\r\n");
-            if (kp.GetString(name1, 20, "Username:")) {
-                //lcd.printf("username: %s\r\n", name1);
-                if (kp.GetString(name2, 20, "Password:", '*')) {
-                    //lcd.printf("password: %s\r\n", name2);
-                    kp.Erase();
-                    lcd.foreground(BrightRed);
-                    lcd.background(Black);
-                    lcd.cls();
-                    lcd.SetTextFontSize(2);
-                    lcd.SetTextCursor(0,30);
-                    lcd.printf("username: %s\r\npassword: %s\r\n", name1, name2);
-                    lcd.SetTextFontSize();
-                }
-            } else {
-                kp.Erase();
-                pc.printf("<esc>\r\n");
-            }
-        } else {
-            kp.SetKeyboard(&altkeyboard, '=');
-            if (kp.GetString(name1, 20, "Calc:")) {
-                lcd.foreground(BrightRed);
-                lcd.background(Black);
-                lcd.cls();
-                lcd.SetTextCursor(0,40);
-                lcd.printf("Calculator: %s\r\n", name1);
-            }
+        lcd.puts(0,0, "Dev Keypad - Build " __DATE__ " " __TIME__ "\r\n");
+        switch (testNum) {
+            default:
+            case 0:
+                testNum = 0;    // capture the overflow and start over...
+                UsernameAndPasswordTest();
+                break;
+            case 1:
+                CalculatorKeypadTest();
+                break;
+            case 2:
+                FloatingSmallQWERTYTest(50,0, 200,0);      // horizontally in by 50, width 200, extend to bottom of screen
+                break;
+            case 3:
+                FloatingSmallQWERTYTest(75, 100, 220, 6 * (lcd.fontheight()+4));   // floating with the top at x=75, y=100
+                break;
         }
-        toggle = !toggle;
+        testNum++;
         wait(5);
     }
 }
+