Anduril ... 2?

Check out this post: https://budgetlightforum.com/t/-/62655

It has info related to the firmware that runs on different lights, and how to find the source code.

Thanks Toykeeper for all the work and dedication on these flashlight Uis, and thanks also for reading and pondering all our comments.

I like Andùril, but am far from being an expert. I barely use the basic stuff - long press to floor, ramping, double click for turbo, three clicks for battery check… I sort of memorized how to set aux leds or start candle mode, but have never gone into any setting adjustment or calibration. Frankly i feel like i’ve dropped into a geek fest of some sort here.

If i may deviate a bit from the accepted logic that everyone can click, click hold, long click or double/triple/quadruple click or else… i’d say that in my experience, a lot of people cannot distinguish a single fast click from a long or “hold” one. I see people pressing the button like they want to squeeze something out of it and it will register as a 1H although it was supposed to be a 1C.

A lot of people don’t expect a flashlight to have different modes or brightness. They just grab it because they need light, press the button, sometime with a very strong intention, and expect to have a decent amount of light to help them right now, without learning a UI diagram or practicing how to properly click that button. If they don’t get what they want they’ll click again until.

A simple UI should take that into account IMO.

PS: i agree with not renaming it. Andùril 2 or something would be more appropriate and productive then a totally new name.

Plasticity, in the philosophical sense as “a capacity to receive form and a capacity to produce form”. In my view, that is what makes Andúril both unique and challenging, relative to current flashlight firmwares. One of the derivates of plasticity is the issue of programmability as a double-edged sword. I will try to elucidate this when I have more time.

ToyKeeper,

Thanks so much for your continued development on Anduril and other flashlight firmwares. It's a lot of work and I'm sure the community has benefited greatly from all your work!

I'll leave the UI suggestions to more experienced members here, but generally I like the list of proposed changes already. The only items I can suggest are not quite UI based, but just from some of the work stemming from the Lume flashlight drivers... so I'm not sure if they are that relevant or not for this thread.

  • Native support for enable pin in a more granular fashion - the current Anduril implementation for some of the new Emisar lights has most of the functionality but leaves EN high when it doesn't need to be, for example during FET usage. For the Lume driver I had to add some custom conditionals in code to turn it off when not being used.
  • Support for external algorithms in separate cfg file, e.g. a temperature management system - I'd like to implement a fuzzy logic temperature compensation for example
  • Support for external sensors in separate cfg file e.g. external temperature sensor which is implemented for Lume driver, with custom temperature formula definition

That said, Anduril is already super full-featured; anything additional is just a bonus :)

Thank you

You can change the config clicks to 10 or so in the code quite easily, CRX does that on his lights so ramp config is more hidden

the main question is if this means going to another MCU with more memory in the end as 8kb are too small then

That would be perfect IMO!

Some time ago I suggested moving them to FSM to simplify building of other UIs.
I still think it would be a good idea.

It would be great to have a lightshow sequence just like the Tesla :partying_face:

Crazy…

Put microphone in flashlight, make it flash to music.

Then Facebook will buy it out and use it to spy on you.

if it hasn’t been said fork it. anduril and simplified version with new name ( i’d suggest Mjölnir ).

Have been making some good progress today…

  • Removed muggle mode, and replaced it with a “simple UI” overlay which restricts which actions are available
  • Made simple UI enabled by default (and after each factory reset)… unless the config file specifies otherwise (so it can be default or not, per build target)
  • Made it so the simple UI use a smooth or stepped ramp
  • Created configurable floor/ceiling/steps vars for simple UI, but didn’t add a menu to actually configure it yet
  • Refactored a lot of ramp-related code
  • Made battcheck exit after one readout, when in simple UI
  • Added 4C from lockout to on (mem)
  • Added 4H from lockout to on (floor)
  • Added 5C from strobes to momentary
  • Moved all aux LED / button LED config actions to 7C / 7H, to make it consistent
  • Moved all config modes / menus to 7C, to make them harder to reach by accident (also, more consistent with aux config)
  • Removed beacon config mode… basically, instead of “click N times” to set the timing in a menu, it’s “hold for N seconds” to set the timing whenever beacon mode is active
  • Reduced overall size by 190 bytes

There is still much more to do, but this has been a good start.

add the best function from the Narsil software, i.e. the ability to disable thermal control will save a lot of trouble for some models and their users

1 Thank

I’m scared of the idea that it’ll change because to me it’s soooooooooooo perfect already

This sounds very promising.

In stepped mode would be nice to have ability to control space in between steps. Fo example 1ma- 5mA - 20mA 50mA - 350ma - 1A - 3A

my understanding is individually programmable modes (steps) are not something Anduril is going to offer.

see

UI with individually programmable modes will be the best and ultimate UI ever made . Everyone will be happy :laughing:

I think ‘simple’ mode should be more simple. Really basic. Click on, click off, or hold to ramp. That’s it. After all, that is really the only thing a muggle will be interested in. We flashaholics are so used to fantabulous features, we’ve forgotten what it was like to be a muggle. Anything but on/off/change levels is more than they want to absorb.

Not that I loan out my flashlights enough to make it matter to me personally. But I gave away a Nitecore EA41 recently along with a copy of the instructions, and the couple was intimidated by the fact that “it’s so complicated, it comes with instructions.” :person_facepalming: That really made me stop and think. The EA41 UI is not complicated.

Personally, I think it’s getting to a point where we may soon need to add in a feature where we click/hold a certain number and the light projects (in the beam on a white wall) the instruction manual! :laughing:

The steps aren’t individually-programmable, but they do accelerate up along a curve like what you described. They are spaced evenly along the ramp, but the ramp itself is curved.

The curve shape is different for each light though, calibrated to make it feel similar despite large differences in the underlying hardware. Except, of course, on lights where the manufacturer didn’t bother doing that and just copied firmware from another light. Those end up with weird ramp shapes and sub-par thermal response.

There are lights which work this way. They typically either come with a separate configurator app (which isn’t possible for most Anduril-based lights) or they take a long time to program… like an hour tapping buttons with the manual. Most people never bother configuring those because it’s too complicated.

However, a separate UI could be created which allows each step to be whatever the user wants. It could also allow user-defined button mappings similar to the YLP Unicorn. I think Inferion had a good idea there, and really put a lot of functionality into a small space. But if something like that is made, it would be a different UI, not Anduril.

One of the things I’m doing with Anduril2 is to break the code into smaller pieces so it’ll be easier to maintain and easier to reuse parts in other UIs. So that may be helpful when attempting to create something more configurable for power users.

That’s a big part of why I made this thread. I’m hoping to answer the question of “what should the simple UI be like?”

The old muggle mode was just click for on/off and hold to ramp. Or a longer button sequence to exit. Nothing else. But people often said it was too simple, and they wanted to be able to check the battery status or lock the light or configure the ramp so it wasn’t stuck at factory settings.

So for now, that’s basically what the new simple UI is. The currently-enabled functions are:

  • Ramp:
    • Click for on/off
    • Hold to change brightness (or press-release-hold to ramp down)
    • Double click to go to/from the top level (no turbo)
  • Battery check (3C)
  • Lockout (4C)
  • Long button sequence to go to advanced mode
  • Even longer button sequence to check the firmware version
  • Factory reset (hold button a few seconds while inserting battery)

It also respects settings configured in advanced mode, like the smooth/stepped ramp style, manual memory vs automatic memory, and (eventually) floor/ceiling levels. But those require going to advanced mode and back, so they don’t really affect anything for muggle purposes.

Are these the right features to have in simple mode? I don’t know. That’s what I’m hoping to find out.