Integrated version

Revision:
16:566ddb132ef8
Parent:
15:646a57eb89f3
Child:
17:5c8c173008cf
--- a/BaseMachineUIController.h	Sun Nov 27 23:44:13 2016 +0000
+++ b/BaseMachineUIController.h	Mon Nov 28 00:37:40 2016 +0000
@@ -6,7 +6,7 @@
  */
  
 #define UART_TRACE_EEPROM    (0)
-#define UART_TRACE_CLIPBOARD (0)
+#define UART_TRACE_CLIPBOARD (1)
 
 #ifndef _UICONTROLLER_H_
 #define _UICONTROLLER_H_
@@ -39,6 +39,16 @@
 const int UImodeMax = 2;
 const int EEPROMSlotMax = 16;
 
+
+//flagEepromCancel スイッチを増やして割り当てる
+typedef enum {
+    flagSaveToEeprom       = 0x01,
+    flagLoadFromEeprom     = 0x02,
+    flagEepromOK           = 0x04,
+    flagCopyToClipBoard    = 0x08,
+    flagPasteFromClipBoard = 0x10
+} LoadSaveFlagT;
+
 struct OscillatorParam {
     uint8_t waveShape;
     uint8_t pulseWidth;
@@ -324,23 +334,24 @@
         }
         
         switch (loadSaveFlag) {
-        case 1:
-            saveToEEPROM();
-            Thread::wait(1000);
+        case flagSaveToEeprom:
+            saveToEeprom();
+            Thread::wait(500);
             isDirty = true;
             break;
-        case 2:
-            loadFromEEPROM();
-            Thread::wait(1000);
+        case flagLoadFromEeprom:
+            loadFromEeprom();
+            Thread::wait(500);
             isDirty = true;
             break;
-        case 8:
+        case flagCopyToClipBoard:
             copyToClipBoard();
-            Thread::wait(1000);
+            Thread::wait(10);
+            isDirty = true;
             break;
-        case 16:
+        case flagPasteFromClipBoard:
             pasteFromClipBoard();
-            Thread::wait(1000);
+            Thread::wait(10);
             isDirty = true;
             break;
         }
@@ -688,7 +699,7 @@
         gLCD->display();
     }
     
-    void saveToEEPROM()
+    void saveToEeprom()
     {
         char buff[64];
 
@@ -703,7 +714,14 @@
             sprintf(buff, "[%02d]", eepromSlot);
             gLCD->drawstring(90, 0, buff);
             gLCD->display();
-            if (loadSaveFlag &= 0x04) {
+            //ToDo: flagEepromCancel スイッチを増やして割り当てる
+            if (loadSaveFlag & flagLoadFromEeprom) {
+                gLCD->drawstring(0, 1, " Cancel");
+                gLCD->display();  
+                return;
+            }
+            printf("loadSaveFlag: %2d\r\n", loadSaveFlag);
+            if (loadSaveFlag & flagEepromOK) {
                 break;
             }
         }
@@ -766,7 +784,7 @@
         gLCD->display();    
     }
     
-    void loadFromEEPROM()
+    void loadFromEeprom()
     {
         char buff[64];
 
@@ -781,7 +799,13 @@
             sprintf(buff, "[%02d]", eepromSlot);
             gLCD->drawstring(102, 0, buff);
             gLCD->display();
-            if (loadSaveFlag &= 0x04) {
+            //ToDo: flagEepromCancel スイッチを増やして割り当てる
+            if (loadSaveFlag & flagSaveToEeprom) {
+                gLCD->drawstring(0, 1, " Cancel");
+                gLCD->display();  
+                return;
+            }
+            if (loadSaveFlag &= flagEepromOK) {
                 break;
             }
         }
@@ -860,7 +884,6 @@
         gLCD->clear();
         gLCD->drawstring(0, 0, "Copy");
         gLCD->display();
-        isDirty = true;
 
         for (int i = 0; i < SEQUENCE_N; i++) {
             sequenceClipBoard[i].setNoteOn(sequences[sequencePattern][i].isNoteOn());
@@ -890,7 +913,6 @@
         gLCD->clear();
         gLCD->drawstring(0, 0, "Paste");
         gLCD->display();  
-        isDirty = true;
 
         #if (UART_TRACE_CLIPBOARD)
         printf("pasteFromClipBoard\r\n");