Have been thinking a long time of how to make the best mode arragement (for me). The last one I made was 4 lm - 16 lm - 64 lm - 250 lm with memory (XP-G in WF-502B) where modes repeated in ring: verylow -> low -> mid -> high -> verylow etc.
The memory was handy but the number of tabs to reach a certain mode from turn-on of course depended on the memorized mode. The goal is to reach the most used modes with the fewest tabs.
A light with no memory would fullfill that and always have the same number of tabs to reach a certain mode and disco modes could even be added at the end:
low -> mid -> high -> verylow -> strobe -> SOS -> Beacon -> low etc.
For a XM-L light this could be:
32 lm -> 125 lm -> 500 lm -> 4 lm -> strobe -> SOS -> Beacon -> low etc.
I think that 32 lm would be a fine standard level for close use and the light would always start in that level. But for other uses it would be better to start in another level. That gave me the idea to combine the no-memory list with a memory giving this mode array:
last_mode -> low -> mid -> high -> verylow -> strobe -> SOS -> Beacon -> last_mode etc.
When the light is turned on it will start in the memorized mode. One tap wil bring it to low, two taps to mid and so forth. If the last_mode was low, one tap of couse should go to mid but that is easy done in programming.
The memory could kick in after staying a few secs in a mode or 1 sec after switch-off.
If memory is made after switch-off it opens up for an alternative arrangement with normal modes in one chain and disco modes in another:
Turn-on, wait 1 sec -starts in normal modes chain:
last_mode -> low -> mid -> high -> verylow -> last_mode etc.
Turn-on + fast tab -goes to Disco modes chain.
strobe -> SOS -> Beacon -> strobe etc.
Now I "only" have to modify Tido's program to test all this.
EDIT: For implementation: Look at post #254