Integrated version

Revision:
11:a2a51191ebe4
Parent:
10:a8ec7391a066
Child:
12:d4e5feab3a2d
--- a/BaseMachineUIController.h	Fri Nov 25 12:13:01 2016 +0000
+++ b/BaseMachineUIController.h	Fri Nov 25 16:03:31 2016 +0000
@@ -317,12 +317,12 @@
         switch (spareValue) {
         case 1:
             saveToEEPROM();
-            Thread::wait(100);
+            //Thread::wait(100);
             isDirty = true;
             break;
         case 2:
             loadFromEEPROM();
-            Thread::wait(100);
+            //Thread::wait(100);
             isDirty = true;
             break;
         }
@@ -669,45 +669,49 @@
         
         #if (UART_TRACE_EEPROM)
         printf("*** Save Sequences to EEPROM ***\r\n");
-        printf("sequencePattern: %d\r\n", sequencePattern);
-        for (int i = 0; i < SEQUENCE_N; i++) {
-            printf("%d %d %03d %d %d\r\n",
-                i,
-                sequences[sequencePattern][i].isNoteOn(),
-                sequences[sequencePattern][i].getPitch(),
-                sequences[sequencePattern][i].isTie(),
-                sequences[sequencePattern][i].isAccent()
-            );
+        for (int j = 0; j < PATTERN_N; j++) {
+            printf("sequencePattern: %d\r\n", j);
+            for (int i = 0; i < SEQUENCE_N; i++) {
+                printf("%d %d %03d %d %d\r\n",
+                    i,
+                    sequences[j][i].isNoteOn(),
+                    sequences[j][i].getPitch(),
+                    sequences[j][i].isTie(),
+                    sequences[j][i].isAccent()
+                );
+            }
         }
         #endif
         
         uint8_t eep_buff[258];
-        uint8_t cnt = 0;
-        for (int i = 0; i < SEQUENCE_N; i++) {
-            eep_buff[cnt++] = sequences[sequencePattern][i].isNoteOn();
-            eep_buff[cnt++] = ((sequences[sequencePattern][i].getPitch() & 0xff00) >> 8); // MSB
-            eep_buff[cnt++] = sequences[sequencePattern][i].getPitch() & 0xff;            // LSB
-            eep_buff[cnt++] = sequences[sequencePattern][i].isTie();
-            eep_buff[cnt++] = sequences[sequencePattern][i].isAccent();
+        for (int j = 0; j < PATTERN_N; j++) {
+            uint8_t cnt = 0;
+            for (int i = 0; i < SEQUENCE_N; i++) {
+                eep_buff[cnt++] = sequences[j][i].isNoteOn();
+                eep_buff[cnt++] = ((sequences[j][i].getPitch() & 0xff00) >> 8); // MSB
+                eep_buff[cnt++] = sequences[j][i].getPitch() & 0xff;            // LSB
+                eep_buff[cnt++] = sequences[j][i].isTie();
+                eep_buff[cnt++] = sequences[j][i].isAccent();
+            }
+            #if (UART_TRACE_EEPROM)
+            printf("size: %d\r\n", cnt);
+            #endif
+            /*
+            for (int i = 0; i < cnt; i++) {
+                printf("%d: %d\r\n", i, eep_buff[i]);
+            }
+            */
+            uint32_t addr_page_top = j << 8;
+            printf("address: %x\r\n", addr_page_top); 
+            AT24C_STATUS status = At24c1024->write_page(
+                addr_page_top, 
+                eep_buff,
+                sizeof(eep_buff)
+            );
+            #if (UART_TRACE_EEPROM)
+            printf("status: %d\r\n", status);
+            #endif
         }
-        #if (UART_TRACE_EEPROM)
-        printf("size: %d\r\n", cnt);
-        #endif
-        
-        /*
-        for (int i = 0; i < cnt; i++) {
-            printf("%d: %d\r\n", i, eep_buff[i]);
-        }
-        */
-        
-        AT24C_STATUS status = At24c1024->write_page(
-            0x00000, 
-            eep_buff,
-            sizeof(eep_buff)
-        );
-        #if (UART_TRACE_EEPROM)
-        printf("status: %d\r\n", status);
-        #endif
 
         gLCD->drawstring(0, 1, " Done");
         gLCD->display();    
@@ -728,46 +732,54 @@
         #endif
         
         uint8_t eep_buff[258];
-
-        AT24C_STATUS status = At24c1024->read_page(
-            0x00000, 
-            eep_buff,
-            sizeof(eep_buff)
-        );
         
-        #if (UART_TRACE_EEPROM)
-        printf("status: %d\r\n", status);
-        #endif
+        for (int j = 0; j < PATTERN_N; j++) {
+            uint32_t addr_page_top = j << 8;
+            AT24C_STATUS status = At24c1024->read_page(
+                addr_page_top, 
+                eep_buff,
+                sizeof(eep_buff)
+            );
+        
+            #if (UART_TRACE_EEPROM)
+            printf("status: %d\r\n", status);
+            #endif
         
-        /*
-        for (int i = 0; i < 80; i++) {
-            printf("%d: %d\r\n", i, eep_buff[i]);
-        }
-        */
+            /*
+            for (int i = 0; i < 80; i++) {
+                printf("%d: %d\r\n", i, eep_buff[i]);
+            }
+            */
         
-        uint8_t cnt = 0;
-        for (int i = 0; i < SEQUENCE_N; i++) {
-            sequences[sequencePattern][i].setNoteOn(eep_buff[cnt++]);
-            int pitch = eep_buff[cnt++] << 8;   // MSB
-            pitch |= eep_buff[cnt++];           // LSB
-            sequences[sequencePattern][i].setPitch(pitch);
-            sequences[sequencePattern][i].setTie(eep_buff[cnt++]);
-            sequences[sequencePattern][i].setAccent(eep_buff[cnt++]);
+            uint8_t cnt = 0;
+            for (int i = 0; i < SEQUENCE_N; i++) {
+                sequences[j][i].setNoteOn(eep_buff[cnt++]);
+                int pitch = eep_buff[cnt++] << 8;   // MSB
+                pitch |= eep_buff[cnt++];           // LSB
+                sequences[j][i].setPitch(pitch);
+                sequences[j][i].setTie(eep_buff[cnt++]);
+                sequences[j][i].setAccent(eep_buff[cnt++]);
+            }
+            
+            #if (UART_TRACE_EEPROM)
+            printf("size: %d\r\n", cnt);
+            printf("sequencePattern: %d\r\n", j);
+            #endif
         }
         // syncronize sequence value & Rotary Encoder's value
         RotEncPitch->setVal(sequences[sequencePattern][editingStep].getPitch());
 
         #if (UART_TRACE_EEPROM)
-        printf("size: %d\r\n", cnt);
-        printf("sequencePattern: %d\r\n", sequencePattern);
-        for (int i = 0; i < SEQUENCE_N; i++) {
-            printf("%d %d %03d %d %d\r\n",
-                i,
-                sequences[sequencePattern][i].isNoteOn(),
-                sequences[sequencePattern][i].getPitch(),
-                sequences[sequencePattern][i].isTie(),
-                sequences[sequencePattern][i].isAccent()
-            );
+        for (int j = 0; j < PATTERN_N; j++) {
+            for (int i = 0; i < SEQUENCE_N; i++) {
+                printf("%d %d %03d %d %d\r\n",
+                    i,
+                    sequences[j][i].isNoteOn(),
+                    sequences[j][i].getPitch(),
+                    sequences[j][i].isTie(),
+                    sequences[j][i].isAccent()
+                );
+            }
         }
         #endif