Page 1 of 1

Arrays in preferences file

Posted: Sun Sep 15, 2024 9:13 pm
by FinnHansen
Hi.
I do need help with preferences.

I have a number of midi data, i need to store in preferences, or something like that.
My problem is how to store arrays within an array ?
I'm completly lost now.

Thanks for any help.
  1.  
  2. #include <Preferences.h>
  3.  
  4. #define RO_MODE true
  5. #define RW_MODE false
  6.  
  7. void setup() {
  8.  
  9.     Preferences midiPrefs;
  10.  
  11.     Serial.begin(115200);
  12.     delay(250);
  13.  
  14.     midiPrefs.begin("myPrefs", RW_MODE);  
  15.     midiPrefs.clear();                    
  16.  
  17.  
  18.     int16_t myArray1[3][4] = { {192, 3, 45, 0} , {176, 15, 95, 5} , {176, 3, 65, 3}};
  19.     //int16_t myArray2[3][4] = { {192, 3, 45, 0} , {176, 15, 95, 5} , {176, 3, 65, 3}};
  20.     //int16_t myArray3[3][4] = { {192, 3, 45, 0} , {176, 15, 95, 5} , {176, 3, 65, 3}};
  21.  
  22.     Serial.println("Printing myArray1...");
  23.     for (int i = 0; i < 3; i++) {
  24.         Serial.print(myArray1[i][0]); Serial.print(", ");
  25.     }
  26.     Serial.println("\r\n");
  27.  
  28.    
  29.  
  30. }
  31.  
  32. void loop() {
  33.  
  34. }

Re: Arrays in preferences file

Posted: Mon Sep 16, 2024 3:00 am
by lbernstone
If it is a fixed structure (ie, the elements of the main array are all identical), you can cast a byte blob into an array of the right size.
If it is variable length strings, or an indeterminate complex structure, you can add them as sequenced elements, and keep the total count (or a list of handles) as a separate piece of state data.