Seite 4 von 4

Re: LazyConfig / EEPROM usage

Verfasst: 16.02.2021, 14:49
von papa
Stimmt - getUserStorage() ist erst im MultiChannelDevice definiert. Bei device() kommt nur ein "Device" zurück. Das hat die Methode nicht.

Re: LazyConfig / EEPROM usage

Verfasst: 16.02.2021, 14:50
von jp112sdl
papa hat geschrieben:
16.02.2021, 14:49
Stimmt - getUserStorage() ist erst im MultiChannelDevice definiert. Bei device() kommt nur ein "Device" zurück. Das hat die Methode nicht.
Und wie komm ich im Channel jetzt an den UserStorage ran? :mrgreen:

Re: LazyConfig / EEPROM usage

Verfasst: 16.02.2021, 15:03
von papa
Beim setup() von außen Setzen, da wo es gebraucht wird.

Code: Alles auswählen


   class Channel ......
     UserStorage  ustore;
   
   ....
   
   public void setUserStorage(const UserStorage& storage) {
     ustore = storage;
   }

  ....
  
  
setup() {
  ....
  sdev.initDone();
  sdev.channel(1).setUserStorage(sdev.getUserStorage());
}

Re: LazyConfig

Verfasst: 04.03.2021, 18:59
von jp112sdl
papa hat geschrieben:
02.01.2021, 23:28
Was bräuchte man denn alles ?

Habe jetzt mal ne neue Klasse UserStorage eingeführt. Diese kann einfach genutzt werden, um den freien EEPROM zu nutzen.

https://github.com/pa-pa/AskSinPP/blob/ ... age.h#L505

Die Nutzung ist ganz einfach

Code: Alles auswählen

uint8_t b = sdev.getUserStorage().getByte(offset);
oder z.B. innerhalb eines Channels durch

Code: Alles auswählen

device().getUserStorage().setByte(offset,data);
Wenn andere Read/Write Methoden noch gebraucht werden - einfach nen PullRequest machen :-)
Ist ein offset von 0 erlaubt/gültig?
Ich hab mich gerade gewundert, warum das Auslesen des UserStorage mit Offset=0 den Wert 0x00 lieferte und alle folgenden Offsets (1, 2, 3) den Wert 0xFF.
Der verwendete Pro Mini ist "frisch" und in den UserStorage geschrieben habe ich noch nie.

Re: LazyConfig / EEPROM usage

Verfasst: 04.03.2021, 21:13
von papa
Sollte eigentlich gehen - ist die gleiche Berechnung wie bei layoutChannels()