Custom Anduril 2 fw3x-lume1 build - help with device configuration changes?

So, after implementing this, I came across a few additional changes needed for the hex to compile.

Just in case anyone is interested or wants to do the same in future, here are the changes needed for the conversion of the fw3x-lume1 driver to single channel AUX.

After these changes the hex compiled successfully. I haven’t tested in a real light yet as I haven’t done the driver swap yet (waiting for parts). In case something else needs to be changed, I’ll add it here.


anduril.h

Before:

#define USE_AUX_RGB_LEDS

After:

#define USE_INDICATOR_LED

Before:

nothing

After:

#define INDICATOR_LED_DEFAULT_MODE ((3<<2) + 2)

Before:

#define USE_POLICE_COLOR_STROBE_MODE
#define POLICE_STROBE_USES_AUX
#define POLICE_COLOR_STROBE_CH1        CM_AUXRED
#define POLICE_COLOR_STROBE_CH2        CM_AUXBLU

After:

removed


hwdef.c

Before:

#include "fsm/chan-rgbaux.c"

After:

#include "fsm/chan-aux.c"

Before:

Channel channels[] = {
    { // channel 1 only
        .set_level    = set_level_main,
        .gradual_tick = gradual_tick_main
    },
    RGB_AUX_CHANNELS
};

After:

Channel channels[] = {
    { // main LEDs
        .set_level    = set_level_main,
        .gradual_tick = gradual_tick_main
    },
    { // aux LEDs
        .set_level    = set_level_aux,
        .gradual_tick = gradual_tick_null
    }
};

hwdef.h

Before:

// allow using aux LEDs as extra channel modes
#include "fsm/chan-rgbaux.h"

After:

// allow using aux LEDs as an extra channel mode
#include "fsm/chan-aux.h"

Before:

// channel modes:
// * 0. main LEDs
// * 1+. aux RGB
#define NUM_CHANNEL_MODES   (1 + NUM_RGB_AUX_CHANNEL_MODES)
enum CHANNEL_MODES {
    CM_MAIN = 0,
    RGB_AUX_ENUMS
};

After:

// channel modes:
// * 0. main LEDs
// * 1. only single channel aux LEDs
#define NUM_CHANNEL_MODES  2
enum CHANNEL_MODES {
    CM_MAIN = 0,
    CM_AUX
};

Before:

// this driver allows for aux LEDs under the optic
#ifdef FW3X_RGB_SWAP  // wiring fixed by end user
    #define AUXLED_R_PIN    PA5    // pin 2
    #define AUXLED_G_PIN    PA4    // pin 3
    #define AUXLED_B_PIN    PA3    // pin 4
#else  // Lumintop's factory wiring
    #define AUXLED_R_PIN    PA3    // pin 4
    #define AUXLED_G_PIN    PA4    // pin 3
    #define AUXLED_B_PIN    PA5    // pin 2
#endif
#define AUXLED_RGB_PORT PORTA  // PORTA or PORTB or PORTC
#define AUXLED_RGB_DDR  DDRA   // DDRA or DDRB or DDRC
#define AUXLED_RGB_PUE  PUEA   // PUEA or PUEB or PUEC

After:

// front-facing aux LEDs only on the lume1 driver Green channel
#define AUXLED_PIN    PA4    // pin 3
#define AUXLED_PORT   PORTA  // PORTA or PORTB or PORTC

Before:

inline void hwdef_setup() {
...
    DDRA = (1 << CH1_PIN)
         | (1 << CH1_ENABLE_PIN)
         | (1 << AUXLED_R_PIN)
         | (1 << AUXLED_G_PIN)
         | (1 << AUXLED_B_PIN)
         ;
...
}

After:

inline void hwdef_setup() {
...
    DDRA = (1 << CH1_PIN)
         | (1 << CH1_ENABLE_PIN)
         | (1 << AUXLED_PIN)
         ;
}