LOL, so I haven't forgotten this, just been busy on other projects. It's worth noting that the last time I wrote actual code was 2001, at Purdue, and that was C. Since then I've only ever done simple scripting. I -understand- code, but to say I'm rusty is an understatement.
That said, I'm trying to design this in a forward thinking manner, so I'm building a bunch of different things that should make it somewhat flexible. I started working on it last night, and so far, this is what I have
2 types of switch functions are in place, momentary (only on when you press/hold it) and latching (stays on after you release, until you press it again). If you tell the program how many latching you want, it will automatically build/map inputs and configure those, then run loops against those to watch for button presses, with an array that tracks the state at all times. Since it knows how many pins there are, and it knows how many were latching, the rest are then momentary, so it builds more arrays for those, and does the same basic functions.
That's the start of it, and those will be "universal" functions. I will build specific functions for: Center Brake Light, Turn Signals, Hazards. I want to add in "comfort" signals, where a quick tap does a 3 blink indication, and a "hey stupid, you left the turn signal on" buzzer. Additionally, the center brake light will pulse on press, with a possible double tap to disable feature.
Beyond that, power window motors will have one touch functions, and I'll current monitor the motor draw to enable that. The other functions in the design right now will be simple stuff, turning on/off dome lights, footwell lights, headlights, DRLs (maybe), stuff like that. Those can all live on latching or momentary inputs (if you put a latching physical switch on a momentary input, it acts as a latch, like a door striker for example). I plan to add some other stuff like a light sensor for turning on headlights/tail lights, etc. eventually as well, but for now, I'm just trying to get it all working. As this is all simple, I'm building on my Arduino Mega 2560 for now and I'll port it over to my Teensy later (or if I hit my head on the Arduino for CPU power. Oh, and my interior lights, etc., will probably end up with soft on/off (so they fade in/out). That's pretty easy to do with a transistor.
Fun fact, I've been building electronics and doing wiring for 25+ years, and I went to college for EE/CE. I had never used a breadboard before today. LOLz.