I just finished a new custom driver firmware for the NANJG105C or NANJG101AK1: lupodrv
Just like normal drivers it has some modes and memory, but it has two additional features:
Mode locking: Select any mode and use it for a second, then quite quickly tap (halfpress) the button 5 times (so it's on for only <0.2s each time), then the mode you started with is locked; it won't change to next mode any more. Good for tacticool or signaling purpose. Return to normal operation by quickly tapping 5 times again.
Programming: You can change any mode to a different brightness, strobe or beacon; you can change the number of modes (1-7), and you can change the memory type (no-memory, classic memory, short-cycle memory).
Select a mode (use for a second) and enter programming mode by 8 rapid taps (<0.2s on each time); then the driver goes through all options (see below), just tap again at the right moment to choose the one you want.
- Programming mode signal, also serves as battery indicator (number of blinks indicates battery voltage)
- Ramps through 16 visually linear levels of brightness up and down two times; just tap to reprogram the above selected mode with that new brightness
- blinks 4 times (* * * *) and repeats that once: strobe (tap to select strobe as new mode)
- blinks 4 times in a bigger interval (*___*___*___*): beacon
- Morse signals "a" (* ---) twice: add a mode; the new mode is inserted before the above selected mode. Tapping here automatically starts programming mode again for that new mode.
- Morse signals "d" (--- * *) twice: delete the selected mode
- Morse signals "n" (--- *) twice: Set to no-memory
- Morse signals "m" (--- ---) twice: Set to normal memory
- Morse signals "s" (* * *) twice: Set to short-cycle memory (see below).
- Then the light exits programming mode without any changes and returns to normal operation, 1st mode.
Battery monitoring: Whenever the battery falls below 3V under load, brightness is reduced (about half). The reduced load usually brings up the voltage a bit. When it drops below 3V again, brightness is halved again - and so on, down to a very low level. It will not switch off and leave you in complete darkness though.
Short-cycle memory combines the advantages of lights with memory and those with no-memory:
Usually with memory you have a few modes, but if you want to go back to the first mode, you have to cycle through the remaining modes. With no memory, you always start at the 1st mode and don't always have to click through all the modes, but you have no memory.
With Short-cycle memory, a mode is memorized after 1s, but if you when you change modes again, it will restart in the first mode instead of the next mode, so you don't have to cycle through all the modes. It actually was sixty545's idea. You can have memory, lots of modes, but no need to cycle through all of them. It effectively hides every mode behind all it's predecessors and is very effective if you have your favourite modes in front and blinkies or other rarely used modes at the end.
I actually use that short-cycle memory all the time (luxdrv uses it, too) and don't like normal memory any more.
PM me if you want one.
Related threads: Tido's thread -- custom driver thread -- luxdrv